package org.bigjava.novelplatform.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.bigjava.novelplatform.common.enums.ContinuedState;
import org.bigjava.novelplatform.common.enums.SaleState;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.URL;

import javax.validation.constraints.Min;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 
 * @TableName books
 */
@TableName(value ="books")
@Data
public class Books implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 书籍名称，限制30字符
     */
    @Length(max = 30)
    private String bookName;

    /**
     * 作者id
     */
    private Integer writerId;

    /**
     * 编辑id
     与编辑类型的user关联
     在后管理书籍的审核
     */
    private Integer editorId;

    /**
     * 书籍创建时间，自动插入
     */
    private Date createTime;

    /**
     * 概要
     */
    @Length(max = 150)
    private String synopsis;

    /**
     * 封面
     */
    private String bookImgUrl;

    /**
     * 存储路径
     包含所有的章节
     */
    @URL
    private String bookUrl;

    /**
     * 字数
     */
    private Integer wordCount;

    /**
     * 章节数
     */
    private Integer chapter;

    /**
     * 订阅量
     加入书架，视作订阅
     */
    private Integer subscription;

    /**
     * 近期访问人数
     定时重置
     热度
     */
    private Long recentVisit;

    /**
     * 连载状态
     0连载中；1完本
     */
    private ContinuedState continuedState;

    /**
     * 最新章节名称
     */
    @Length(max = 30)
    private String lastChapterName;

    /**
     * 最新章节id
     */
    private Long lastChapterId;

    /**
     * 最新章节更新时间
     */
    private Date updateTime;

    /**
     * 分类名
     与catalog表关联，<br />catalog_name不可重复，<br />可直接查找分类
     */
    @Length(max = 30)
    private String catalogName;

    /**
     * 章节单价
     */
    private BigDecimal chapterUnitPrice;

    /**
     * 单章手续费比例
     */
    private BigDecimal chapterServiceCharge;

    /**
     * 打赏手续费比例
     */
    private BigDecimal serviceCharge;

    /**
     * 积分
     由用户打赏获取
     */
    private Long integral;

    /**
     * 收益,依靠打赏
     本书收益，已扣除平台
     */
    private BigDecimal earningsOther;

    /**
     * 收益,依靠章节
     本书收益，已扣除平台
     */
    private BigDecimal earnings;

    /**
     * 近期积分上涨
     定时重置
     */
    private Long recentIntegral;

    /**
     * 试读章节
     -1免费；[0,promotion]
     */
    @Min(-1)
    private Integer promotion;

    /**
     * 上架状态
     0未上架；1上架
     */
    private SaleState saleState;

    /**
     * 上架时间
     */
    private Date saleTime;

    /**
     * 逻辑删除
     0未删除；1删除
     */
    private Integer deleteState;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

}